linux 文件属性信息解析(inode/权限/硬连接等) 您所在的位置:网站首页 linux 查看一个文件的大小 linux 文件属性信息解析(inode/权限/硬连接等)

linux 文件属性信息解析(inode/权限/硬连接等)

2023-10-14 18:26| 来源: 网络整理| 查看: 265

Linux系统一切皆文件,我们使用命令ls -li 查看文件时,可以显示文件的具体信息,总共有九列,每一列都代表着不同含义。

linux 文件属性信息解析(inode/权限/硬连接等)

文件属性

文件inode

文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区sector,每个扇区存储512字节。操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个块block。这种由多个扇区组成的块,是文件存取的最小单位。块的大小,最常见的是4KB,即连续八个sector组成一个block。

文件数据存储在块中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为索引节点,也叫i节点。因此,一个文件必须占用一个inode,但至少占用一个block。

元信息 → inode数据 → block # stat命令可以查看inode信息 [root@my-os ~]# stat /etc/passwd

 

linux 文件属性信息解析(inode/权限/硬连接等)

inode 信息

文件类型

常见的文件类型符合主要有以下几种:

d:代表目录-:代表普通文件l:代表链接文件(相当于windows系统的快捷方式)c/b:代表块文件/字符文件s:代表socket文件(套接字文件) [root@my-os ~]# ls -l /etc/hosts [root@my-os ~]# ls -ld /etc/ [root@my-os ~]# ls -l /etc/system-release [root@my-os ~]# ls -l /dev/zero [root@my-os ~]# ls -l /dev/sda

linux 文件属性信息解析(inode/权限/硬连接等)

不同文件类型

文件权限

linux文件基本权限位为9位权限,每三位一组,分别是文件属主(Owner)的读、写、执行,文件属于组(Group)的读、写、执行,其他用户(Other)的读、写、执行;此外还有额外3位权限位,共12位权限。

基本权限:

r :读(read)权限,可以用数字4表示w:写(write)权限,可以用数字2表示x :执行(e'x'cute)权限,可以用数字1表示-:没有权限,可以用数字0表示 # 创建一个新文件,一般默认都是644权限 [root@my-os ~]# touch testfile.txt [root@my-os ~]# stat testfile.txt # 创建一个目录,一般默认都是755权限 [root@my-os ~]# mkdir testdir [root@my-os ~]# stat testdir # 其实创建的文件和目录的默认权限,是根据我们系统设置umask的取值决定的。 # 目录的默认权限是:777 文件的默认权限是:666 # 根据目录默认权限与umask的权值相减得到创建新目录的权限 # 根据文件默认权限与umask的权值相减得到创建新文件的权限 # 比如root用户的umask是0022,那么目录权限:777-022 = 755 文件权限:666-022 = 644 [study@my-os ~]$ umask 0002

linux 文件属性信息解析(inode/权限/硬连接等)

默认权限

特殊权限:

suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。guid则表示执行相应脚本的用户将具有该文件所属用户组中用户的权限。

suid:用户对应的权限位,可以用数字4表示sgid:用户组对应的权限位,可以用数字2表示sticky:其他用户对应的权限位,可以用数字1表示 # chmod 命令可以用来设置文件权限 # 设置suid [root@my-os ~]# chmod u+s testfile.txt [root@my-os ~]# chmod 4644 testfile.txt #设置sgid [root@my-os ~]# chmod g+s testdir/ [root@my-os ~]# chmod 2755 testdir/ #设置sticky [root@my-os ~]# chmod o+t /tmp/tmp.txt [root@my-os ~]# chmod 1644 /tmp/tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

特殊权限

文件硬连接数

硬连接就是一个inode值对应了多个文件名,相当于使用了多个别名,硬链接只能在同一文件系统中的文件之间进行链接,不能对目录进行创建。删除一个硬链接文件并不影响其他有相同 inode 号的文件。

# 创建一个文件,内容hello world [root@my-os ~]# cat > myfile.txt hellp world! ^C # 查看inode,硬连接数为1 [root@my-os ~]# ls -li myfile.txt 67153474 -rw-r--r--. 1 root root 13 Jan 31 10:43 myfile.txt # ln 创建硬连接 # ln 源文件 目标文件 [root@my-os ~]# ln myfile.txt myfile.txt_1 # 查看两个文件,inode相同,硬连接数为2 [root@my-os ~]# ls -li myfile.txt* 67153474 -rw-r--r--. 2 root root 13 Jan 31 10:43 myfile.txt 67153474 -rw-r--r--. 2 root root 13 Jan 31 10:43 myfile.txt_1 # 删除源文件,并不影响目录文件 [root@my-os ~]# rm myfile.txt -f [root@my-os ~]# cat myfile.txt_1 hellp world! [root@my-os ~]# ls -li myfile.txt_1 67153474 -rw-r--r--. 1 root root 13 Jan 31 10:43 myfile.txt_1

linux 文件属性信息解析(inode/权限/硬连接等)

 

文件所属主

文件的所属用户,也就是uid。

# 通过 id 命令,查看用户的信息 [root@my-os ~]# id root uid=0(root) gid=0(root) groups=0(root) # 创建文件,该文件属于root用户,对应有读写权限 [root@my-os ~]# touch tmp.txt [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 0 Jan 31 10:57 tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

属主

文件所属组

文件所属的用户组,也就是gid。

# 通过 id 命令,查看用户的信息 [root@my-os ~]# id root uid=0(root) gid=0(root) groups=0(root) # 创建文件,该文件属于root用户组,该组成员对文件有读权限 [root@my-os ~]# touch tmp.txt [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 0 Jan 31 10:57 tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

属组

文件大写 # 创建一个文件,大小25M [root@my-os ~]# dd if=/dev/zero of=./test.txt bs=1M count=25 25+0 records in 25+0 records out 26214400 bytes (26 MB) copied, 0.176295 s, 149 MB/s # ls 可以看到文件大小,单位字节(bytes) [root@my-os ~]# ls -l test.txt -rw-r--r--. 1 root root 26214400 Jan 31 11:10 test.txt # du 命令可以查看文件大小 [root@my-os ~]# du -sm test.txt

linux 文件属性信息解析(inode/权限/硬连接等)

文件大小

文件修改时间

Linux系统文件有三个时间,Access Time(访问时间)、Modify Time(修改时间)、Change Time(改变时间)。

Access Time,它在Linux的文件系统中被称为访问时间,当文件的内容被访问时,就会更新这个时间。 # 创建一个时间 [root@my-os ~]# echo 123 > tmp.txt [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 4 Jan 31 11:23 tmp.txt [root@my-os ~]# date Sun Jan 31 11:31:57 CST 2021 # 查看这个文件之后,可以看到文件访问时间被修改了 [root@my-os ~]# cat tmp.txt [root@my-os ~]# stat tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

Access Time

Modification Time,当“内容数据”被修改时,Linux系统会去更新这个时间 [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 4 Jan 31 11:23 tmp.txt [root@my-os ~]# date Sun Jan 31 11:34:43 CST 2021 # 修改文件内容,文件修改时间被更改了 [root@my-os ~]# echo 456 > tmp.txt [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 4 Jan 31 11:34 tmp.txt [root@my-os ~]# stat tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

Modification Time

Change Time,即状态时间,当文件的状态即文件的属性被改变时就会更改这个时间,例如文件系统中的links(链接数)、size(文件的大小)、文件的权限。 [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 1 root root 4 Jan 31 11:34 tmp.txt [root@my-os ~]# date Sun Jan 31 11:37:13 CST 2021 # 为该文件创建硬连接 [root@my-os ~]# ln tmp.txt tmp.txt_1 # 这时候没有修改文件内容,文件修改时间不变 [root@my-os ~]# ls -l tmp.txt -rw-r--r--. 2 root root 4 Jan 31 11:34 tmp.txt # 使用stat可以看到状态时间发生了变化 [root@my-os ~]# stat tmp.txt

linux 文件属性信息解析(inode/权限/硬连接等)

Change Time



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有